1. Field of the Invention
The present invention relates to an object, a method, or a manufacturing method. In addition, the present invention relates to a process, a machine, manufacture, or a composition of matter. For example, the present invention relates to a semiconductor device, a driving method thereof, or the like. For example, the present invention relates to a programmable logic device, a reconfigurable circuit, a driving method thereof, or the like. Specifically, the present invention relates to a semiconductor device including a dynamically reconfigurable circuit, a driving method thereof, or the like.
2. Description of the Related Art
Unlike a normal integrated circuit in which all circuits are fixed at the time of manufacture, a programmable logic device (PLD) is a device that can function with an intended circuit configuration set by a user at the time of actual use after shipment. Examples of such devices that are programmable by users are a small-scale programmable array logic (PAL) and generic array logic (GAL) and a large-scale complex programmable logic device (CPLD) and field programmable gate array (FPGA); in this specification, such devices are collectively called a programmable logic device (hereinafter referred to as PLD).
PLDs have advantages such as a short development period and flexibility in changing design specifications over conventional application specific integrated circuits (ASICs). Thus, the use of PLDs for semiconductor devices has been promoted in recent years.
A PLD is composed of, for example, a plurality of programmable logic elements (also referred to as logic blocks) and wirings between the programmable logic elements. A function of the PLD can be changed by changing a function of the programmable logic elements. Moreover, a function of the PLD can be changed by changing an electrical connection state between programmable logic elements.
The programmable logic element is composed of a lookup table (LUT) and a multiplexer, for example. A function of the programmable logic element can be specified by setting a given value in a memory element that stores data of the lookup table. Further, a function of the programmable logic element can be specified by setting a given value in a memory element that stores information on selection of signals input to the multiplexer.
The wirings between the programmable logic elements are constituted using, for example, a connection switch capable of controlling connections between a plurality of wirings and a plurality of wirings. The electrical connection state of the wirings between the programmable logic elements can be specified by setting a given value in a memory element that stores data on the on/off state of the connection switch.
Information including the data of a lookup table, the information on selection of signals input to a multiplexer, and the data on the on/off state of a connection switch is referred to as configuration data. A memory element storing configuration data is referred to as a configuration memory. Setting configuration data in a configuration memory is called “configuration”. In particular, setting new configuration data (updating configuration data) in a configuration memory is called “reconfiguration”. The circuit configuration of the PLD can be changed in response to a user's request by producing (programming) intended configuration data and performing configuration.
The PLD generally performs configuration (static configuration) while the operation of a semiconductor device including the PLD is stopped. In contrast, to further exploit the features of the PLD, a technique of performing configuration (dynamic configuration) while the semiconductor device operates has attracted attention. Specifically, a plurality of pieces of configuration data corresponding to a plurality of circuit configurations (contexts) are prepared, and circuit functions are switched. Such a PLD can be called a multi-context PLD.
For dynamic configuration in Patent Document 1, each piece of configuration data corresponding to a plurality of circuit configurations is stored at a different address in a dynamic random access memory (DRAM), and a configuration memory is composed of a static random access memory (SRAM). Patent Document 1 suggests a method of performing configuration in a short time by reading configuration data on an intended circuit configuration from the address of the DRAM and writing the configuration data into the SRAM, which is the configuration memory.
However, with the configuration disclosed in Patent Document 1, regular refresh operation is required to maintain configuration data in the DRAM, and the power consumption is increased as a result. Since the DRAM is a volatile memory, it is necessary to store data in the DRAM every time the PLD is powered on. For this reason, a nonvolatile memory is needed to store configuration data. In addition, a step of transferring a large volume of data from the nonvolatile memory to the DRAM is required every time the PLD is powered on; thus, the startup time is increased.
When an SRAM is used as the configuration memory, at least four transistors are required, which leads to a significant increase in the number of elements in the entire PLD and an increase in the circuit area.
In contrast, in Patent Document 2, the present inventor suggests a PLD (reconfigurable circuit) in which a nonvolatile memory including a transistor with extremely low off-state current (hereinafter referred to as an OS transistor) as a component (such a nonvolatile memory is hereinafter referred to as an OS memory) is used as a configuration memory.
The OS memory stores configuration data by controlling the amount of charge at a storage node with the OS transistor. With this structure, charge can be held, and a nonvolatile memory can be easily achieved.
The use of the OS memory as a configuration memory and also as a routing switch makes it possible to configure a switch with a small number of transistors. This makes it easy to decrease the area of a configuration memory and increase the degree of integration of the configuration memory.
Accordingly, it becomes easy to configure a multi-context PLD (dynamically reconfigurable circuit) in which configuration data can be rewritten during operation.
Furthermore, the use of the OS memory makes it possible to increase the switching speed of a routing switch (also referred to as a path transistor) by a boosting effect during circuit operation.